home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 126-150 / disk_138 / modulatools / modulatools.source / texttools.def < prev    next >
Text File  |  1992-05-06  |  5KB  |  87 lines

  1. (******************************************************************************)
  2. (*                                                                            *)
  3. (*    The global constants and variables defined in this module are optional: *)
  4. (* if you don't want to access their features, you needn't import them into   *)
  5. (* your program. The variables in the parameter lists of the procedures are   *)
  6. (* the only variables you are required to supply.                             *)
  7. (*    When describing the order in which certain routines are called, I have  *)
  8. (* adopted the curly-bracket notation of EBNF: routines in curly brackets {}  *)
  9. (* may be called an arbitrary number of times (0 to n). A, {B}, {C, {D}} thus *)
  10. (* implies that A is called once, followed by an arbitrary number of calls to *)
  11. (* to B, followed by an arbitrary number of calls to C. Each of the calls to  *)
  12. (* C may be followed by an arbitrary number of calls to D. Likewise, {{C},{D}}*)
  13. (* implies an arbitrary number of calls to C and D in any order.              *)
  14. (*                                                                            *)
  15. (******************************************************************************)
  16. (*                                                                            *)
  17. (*  Version 1.00a.002 (Beta) :   March 2, 1988                                *)
  18. (*                                                                            *)
  19. (*    These procedures were originally written under version 1.20 of the TDI  *)
  20. (* Modula-2 compiler. I have rewritten this module to operate under the v2.00 *)
  21. (* compiler. However, should you find any problem or inconsistency with the   *)
  22. (* functionality of this code, please contact me at the following address:    *)
  23. (*                                                                            *)
  24. (*                               Jerry Mack                                   *)
  25. (*                               23 Prospect Hill Ave.                        *)
  26. (*                               Waltham, MA   02154                          *)
  27. (*                                                                            *)
  28. (*    Check the module MenuUtils for TDI's (considerably less powerful) ver-  *)
  29. (* sions of my Menu and IntuitionText procedures. The modules GadgetUtils and *)
  30. (* EasyGadgets should also be of great help.                                  *)
  31. (*                                                                            *)
  32. (******************************************************************************)
  33. (*                                                                            *)
  34. (*    The source code to TextTools is in the public domain. You may do with   *)
  35. (* it as you please.                                                          *)
  36. (*                                                                            *)
  37. (******************************************************************************)
  38.  
  39. DEFINITION MODULE TextTools;
  40.  
  41. FROM GraphicsLibrary IMPORT DrawingModeSet;
  42. FROM Intuition       IMPORT WindowPtr, IntuitionTextPtr;
  43. FROM Strings         IMPORT String;
  44. FROM Text            IMPORT TextAttrPtr;
  45.  
  46.  
  47. VAR
  48.    FrontTextPen : INTEGER;   (* these pens are chosen from the screen pen- *)
  49.    BackTextPen  : INTEGER;   (* palette; e.g., 3 bit planes = 8 pens (0-7);*)
  50.    CurrentFont  : TextAttrPtr;       (* in case you want a different font; *)
  51.    LastText     : IntuitionTextPtr;  (* connect current text to last text; *)
  52.    TextDrawMode : DrawingModeSet;             (* method used to draw text; *)
  53.  
  54.  
  55.    PROCEDURE GetIntuiText     (TextItem          : String;        (* Input *)
  56.                                TextLeft, TextTop : INTEGER;       (* Input *)
  57.                                VAR IntuiText     : IntuitionTextPtr); 
  58.  
  59.    PROCEDURE DestroyIntuiText (VAR IntuiText     : IntuitionTextPtr;
  60.                                DestroyAllText    : BOOLEAN); 
  61.  
  62.  
  63.         (* Default values upon importing this module: *)
  64.         (* FrontTextPen =  0    CurrentFont = NULL    *)
  65.         (* BackTextPen  =  1    LastText    = NULL    *)
  66.         (* TextDrawMode = Jam2                        *)
  67.  
  68.     (* GetIntuiText returns an IntuitionText structure containing the    *)
  69.     (* desired text. TextLeft and TextTop are the pixel positions where  *)
  70.     (* the lower-left corner of the text will be placed. If LastText <>  *)
  71.     (* NULL, then LastText will point to IntuiText, thus creating a      *)
  72.     (* linked list of IntuitionText structures. Just call GetIntuiText,  *)
  73.     (* assign LastText to IntuiText and call GetIntuiText again.         *)
  74.  
  75.     (* LastText is set to NULL following the call to GetIntuiText.       *)
  76.  
  77.     (* DestroyIntuiText DISPOSEs of IntuitionText: If DestroyAllText is  *)
  78.     (* TRUE, then it also DISPOSEs of all IntuitionText forward-linked   *)
  79.     (* to IntuiText. If DestroyAllText is FALSE, then only the Intuition-*)
  80.     (* Text pointed to by IntuiText is DISPOSEd. If IntuiText is forward-*)
  81.     (* linked to other IntuitionText upon entry to this procedure, then, *)
  82.     (* upon return, IntuiText will point to the next IntuitionText in the*)
  83.     (* linked list.                                                      *)
  84.  
  85.  
  86. END TextTools.
  87.